package info.persistent.pushbot.commands; import com.google.appengine.api.xmpp.JID; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; import info.persistent.pushbot.data.Subscription; import info.persistent.pushbot.util.Xmpp; import org.apache.commons.lang3.StringEscapeUtils; import java.util.List; public class ListSubscriptionsCommandHandler implements CommandHandler { @Override public void handle(JID user, String... args) { List<Subscription> subscriptions = Subscription.getSubscriptionsForUser(user); if (subscriptions.isEmpty()) { Xmpp.sendMessage(user, "You have no subscriptions."); return; } Multimap<String, Subscription> subscriptionsByHub = ArrayListMultimap.create(); for (Subscription subscription : subscriptions) { subscriptionsByHub.put(subscription.getHubUrl().toString(), subscription); } StringBuilder message = new StringBuilder("Subscriptions:"); for (String hubUrl : subscriptionsByHub.keySet()) { message.append("\n at hub ").append(hubUrl).append(":"); for (Subscription subscription : subscriptionsByHub.get(hubUrl)) { message.append("\n ").append(subscription.getFeedUrl()); String title = subscription.getTitle(); if (title != null && !title.isEmpty()) { message.append(" (") .append(StringEscapeUtils.unescapeHtml4(title)).append(")"); } } } Xmpp.sendMessage(user, message.toString()); } }